import time

from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
import unittest
from selenium.webdriver.support.select import Select


class MyTestCase(unittest.TestCase):
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        service = Service(executable_path="../driver/geckodriver.exe")
        cls.driver = webdriver.Firefox(service=service)

    def test_alert(self):
        """测试 常用 的selenium 的方法"""

        self.driver.get("http://127.0.0.1:8080/testhtml/exam/testSelenium.html")
        list = self.driver.find_elements(By.XPATH, "//input")
        list[0].click()

        time.sleep(2)
        # 如果在网页中 操作的时候出现了 弹窗 ，我们要切换 光标
        alert = self.driver.switch_to.alert
        # 获得弹窗的标题名
        print(alert.text)
        # alert.accept()
        alert.dismiss()

    def test_Confirmation(self):
        """测试 常用 的selenium 的方法"""

        self.driver.get("http://127.0.0.1:8080/testhtml/exam/testSelenium.html")
        list = self.driver.find_elements(By.XPATH, "//input")
        list[1].click()

        time.sleep(2)
        # 如果在网页中 操作的时候出现了 弹窗 ，我们要切换 光标
        alert = self.driver.switch_to.alert
        # 获得弹窗的标题名
        print(alert.text)
        # alert.accept() # 确定
        alert.dismiss()  # 取消

    def test_Prompt(self):
        """测试 常用 的selenium 的方法"""

        self.driver.get("http://127.0.0.1:8080/testhtml/exam/testSelenium.html")
        list = self.driver.find_elements(By.XPATH, "//input")
        list[2].click()

        time.sleep(2)
        # 如果在网页中 操作的时候出现了 弹窗 ，我们要切换 光标
        alert = self.driver.switch_to.alert
        # 获得弹窗的标题名
        print(alert.text)
        # 想 输入框中写入 数据
        alert.send_keys('hanamaki')
        time.sleep(2)
        # alert.accept() # 确定
        alert.dismiss()  # 取消

    @classmethod
    def tearDownClass(cls) -> None:
        # cls.driver.close() # 只会 关闭一个 标签页
        # cls.driver.quit()  # 推出浏览器  全部关闭所有的标签页

        pass


if __name__ == '__main__':
    unittest.main()
